Новий ролаут N2O
Все хотів вести блог прямо в гітхабі, і ось я тут. Привіт, Твіттер!
Один раз в рік я випускаю обновлені версії N2O. Цього року це — більш матурніша MQTT бібліотека, яка разом із версією веб-сокету отримала тег 5.10, остання все ще залишається в окремому репозиторії; NITRO вже змержилася і сумісна з обома версіями, хто знає, можливо, в наступних версіях, або вже в новому році прийде гранд мерж MQTT і N2O репозиторіїв (залишилося пару файлів перенести зі старого репозиторія і запустити старий веб-сокетний приклад на новому дереві)! У зв'язку з дедалі більшою кількістю деприкейтів у логах, було прийнято рішення залочити всі чужі ліби та зробити щось типу SYNRC сховища репозиторіїв. Цього місяця до нього ввійшли та залочилися:
— https://github.com/voxoz/cowboy — 1.0.4
— https://github.com/voxoz/cowlib — 1.0.0
— https://github.com/voxoz/ranch — 1.0.0
— https://github.com/voxoz/erlydtl — 0.8
— https://github.com/voxoz/emqttc — 0.8
— https://github.com/voxoz/gen_logger — 1.2
— https://github.com/voxoz/lager — 3.2.2
— https://github.com/synrc/emq_dashboard — 2.1.1
— https://github.com/synrc/emqttd — 2.1.2
— https://github.com/voxoz/esockd — 4.1.1
— https://github.com/voxoz/mochiweb — 4.2.1
— https://github.com/voxoz/gproc — 0.8
— https://github.com/voxoz/syn — 1.5
Водночас з цим обновився головний хедлайнер сезону, бібліотека voxoz/mq, яка включає старий EMQ 2.1.2 і його дашборд. Крім цього викотилася жовтнева хвиля екосистеми N2O, а саме (від старих до нових):
— https://github.com/synrc/n2o — 5.10
— https://github.com/synrc/kvs — 5.10
— https://github.com/synrc/mad — 4.10
— https://github.com/synrc/fs — 4.10
— https://github.com/synrc/active — 4.10
— https://github.com/synrc/nitro — 3.10
— https://github.com/synrc/bpe — 3.10
— https://github.com/synrc/sh — 2.10
— https://github.com/synrc/review — 1.10
— https://github.com/synrc/bert — 1.10
— https://github.com/synrc/mqtt — 5.10 (N2O-MQTT)
Цілком можливо, що час, у стилі NIH-синдрому, писати протокол свого репозиторія пакетів разом з бінарною дистриб'юцією пакетів самого ерлангу (давно просять). Адже, навіть я до таких глибин ще не опускався, якщо npm-вівці можуть, а я чим гірший!
Десь мінорні фікси, десь ворнінги, всі репозиторії включені у тревісі і можна бачити їх стрим: https://travis-ci.org/voxoz, https://travis-ci.org/synrc,там же можна глянути всі логи всіх білдів. Як видно, багато репозиторіїв не були включеними, тому в найближчих планах засвітити все зеленим, це передбачає зборку ребаром та медом.
Чому критикують mad, я не знаю, наприклад на тревісі rebar на 19.3 gen_logger
The command "rebar get-deps compile" exited with 1.
не збирає, а з mad все працює:
mad почав підтримувати зборку кубічним тайпчекером, з'явився модуль mad_cubical, але через рік-два, хто знає, можливо, тут буде вже свій AST трансформатор на Erlang.
Загалом ця робота зайняла 170 коммітів у 30 репозиторіях і рівно 1 добу без перерви. Сюди входять усі багфігси разом із видаленням файлів та склеюванням деяких репозиторіїв, все, починаючи від імпорту, закінчуючи ченджлогами та релізами. Я заморочився, але добився що в білдлогах на 19.1, 19.2, 19.3, 20.0.4, 21.0.4, 21.1.1 немає жодного ворнінгу! Думав, взагалі по-чесному переписати esockd з gen_fsm на gen_statem але виявилося, що завдання одним днем не обмежиться, тому
врятувала ситуацію. Але депрекейтеди валяться в основному на останніх ерлангах, пропонують як покроковий турторіал, що на що переписувати, я пройшов цей квест для esockd, трохи але запустити успішно з першого разу не вдалося, а це ж головна частина тракту, а якщо ліки? тому я не став.
Планую ще зробити багато гарного! Думаю зайнятися дизайном N2O, можливо на кубику протоколи N2O поки що напишу.
Максим